草庐IT

php - PHP 闭包

全部标签

javascript - 谷歌闭包中的 DomHelper 是什么?

谁能解释一下DomHelperingoogleclosure的含义?它有什么用,它有什么用?谢谢!编辑:Hereisamoredetailedanswer 最佳答案 DomHelper提供与goog.dom中的静态实用程序方法类似的功能。不同之处在于,DomHelper实例可以绑定(bind)到对应于不同窗口(例如IFrame)或父框架的document对象。这基本上允许UI控件在正确窗口的范围内执行它们的DOM操作,即使实际对象位于另一个窗口中也是如此。 关于javascript-谷歌

使用闭包在循环中创建的javascript计时器或间隔

我正在使用jQuery在一些元素上设置计时器或间隔循环,以每隔几秒检查一次。我试过设置计时器并检查是否应该重新启动它,或者设置和间隔并检查是否应该停止它。虽然简化了,但这基本上是我需要的:varmytimers=newArray();$('div.items').each(function(){myID=$(this).attr('id');mytimers[myID]=setInterval(function(){myFunction(myID)},3000)});functionmyFunction(param){alert(param);if(something()){clear

javascript - 在 javascript 的父闭包中引用 "this"

我想在Javascript中这样做:functionZ(f){f();}functionA(){this.b=function(){Z(function(){this.c()});}this.c=function(){alert('helloworld!');}}varfoo=newA();foo.b();可以这样实现:functionZ(f){f();}functionA(){varself=this;this.b=function(){Z(function(){self.c()});}this.c=function(){alert('helloworld!');}}varfoo=n

javascript - 为什么不对对象属性使用闭包?

我目前正在用javascript编写对象,我希望使用最佳实践等以一种清晰、漂亮的方式来完成它。但我很烦恼我必须始终将this.写到地址属性,与其他OO语言不同。所以我想到了-为什么不对对象属性使用闭包?看看我的示例对象。所以不是这样,经典的方式:varMyObjConstructor=function(a,b){//constructor-initializationofobjectattributesthis.a=a;this.b=b;this.var1=0;this.var2="hello";this.var3=[1,2,3];//methodsthis.method1=funct

javascript - 使用谷歌闭包创建事件

我想在google闭包(GC)环境中使用事件在我的对象之间进行通信。假设我有两个类foobar.Boss和foobar.Employee。老板想知道员工什么时候煮过咖啡,以及咖啡是否不含咖啡因(他这周要戒掉咖啡因)。GC提供的类似乎提供了执行此操作的方法,goog.events.Event和goog.events.EventTarget。在不知道更好的情况下,我认为它会像这样工作:foobar.Employee.prototype.makeCoffee=function(isDecaf){this.coffeeMaker.putCoffeeInMachine(isDecaf);this

javascript - 闭包编译器的正则表达式类型

我目前正在向个人javascript模块添加类型注释,但我目前在尝试键入以正则表达式作为参数的函数时卡住了,但以下尝试均无效:/**@type{function(RegExp)}*//**@type{function(regex)}*/我只得到:WARNING-Badtypeannotation.Unknowntyperegexp我应该在声明中使用什么类型?谢谢。 最佳答案 RegExp对象被注释为ClosureCompiler在外部es3.js.这是一个接受RegExp对象的示例函数。/***@param{RegExp}regex

javascript - 如何删除使用闭包添加的 EventListener?

这基本上是一个后续问题:Can'tpasseventtoaddEventListener:closureissue.我几乎阅读了所有相关问题,但找不到答案。下面的函数是在一个循环中执行的,其中参数是从数据数组中提取的。使用此功能,我可以将不同的/新的参数传递给事件监听器的每个实例。outerfunction允许将参数的值封装在闭包中,以便实际值可用,而不仅仅是对持有者的引用。此外,传递事件函数将事件传递给响应函数。最后,responsefunction具有所有适当的信息以响应点击事件。这很好用。问题是,我不知道以后如何删除事件监听器。我已经尝试了我能想到的一切。请帮忙。我怎样才能:re

javascript - 双闭包如何打破循环引用?

我正在阅读如何circularreferencescausememoryleaksinIE,但我对使用闭包中的闭包来打破循环引用的示例感到非常困惑:functionaddHandler(){varclickHandler=function(){this.style.backgroundColor='red';};(function(){varel=document.getElementById('el');el.onclick=clickHandler;})();}我的脑子里一直在纠结什么引用了什么,哪些是闭包,哪些是作用域对象。有人能比MDN更明确地分解它吗?谢谢。

javascript - 如何打破 JavaScript 中的闭包

在JavaScript中有什么方法可以轻松地打破闭包吗?我得到的最接近的是:varsrc=3;functionfoo(){returnfunction(){returnsrc;}}functionbar(func){varsrc=9;returneval('('+func.toString()+')')();//Thisline}alert(bar(foo()));这会打印“9”,而不是“3”,因为闭包会指示。但是,这种方法对我来说有点丑陋,有没有更好的方法? 最佳答案 您的代码并没有破坏闭包,您只是获取构成函数的代码并在不同的上下

go - 将闭包作为函数的参数传递

来自这个例子:https://gobyexample.com/closures如果我们改变:fmt.Println(nextInt())fmt.Println(nextInt())fmt.Println(nextInt())到fmt.Println(intSeq())fmt.Println(intSeq())fmt.Println(intSeq())gorun将失败并出现错误:./prog.go:32:5:PrintlnargintSeq()isafuncvalue,notcalled但是从这个例子来看:https://gobyexample.com/recursionfmt.Prin